<?php

class ModuloController extends Controller
{
	public $layout='/layouts/column2';
	public $mainMenu='catalogos';
	
	public function filters()
	{
		return array(
				'accessControl',
		);
	}
	
	public function accessRules()
	{
		return array(
				array('allow',
						'actions'=>array('index','nuevo','editar','ObtenerMenus'),
						'roles'=>array('ADMINISTRADOR'),
				),
				array('deny',  // deny all users
						'users'=>array('*'),
				),
		);
	}
	
	public function actionIndex()
	{
		if(Yii::app()->request->isAjaxRequest){
			$numeroRegistrosPagina=Yii::app()->request->getParam("iDisplayLength");
			$indiceRegistroInicio=Yii::app()->request->getParam("iDisplayStart");
			$busqueda=Yii::app()->request->getParam("sSearch");
			$modulosAArray=Modulo::model()->buscarModulosPaginadoArray($indiceRegistroInicio, $numeroRegistrosPagina,$busqueda);
			$count=Modulo::model()->count();
			$sEcho=Yii::app()->request->getParam("sEcho");
			$resultadoPaginacionDatatables=Yii::app()->paginacionUtil
			->generarArrayRetornoDataTables($count,$modulosAArray,$sEcho,$count);
			echo json_encode($resultadoPaginacionDatatables);
			Yii::app()->end();
		}
		else{
			$this->render('index');
		}
	}

	public function actionNuevo(){
		if(Yii::app()->request->isPostRequest){
			$transaction=Yii::app()->db->beginTransaction();
			$resultado["error"]=false;
			try {
				$id_modulo=Modulo::model()->guardarModulo($_POST);
				if($id_modulo!=-1&&isset($id_modulo)){
					$transaction->commit();
					$resultado["mensaje"]=$id_modulo;
				}
				else{
					throw new Exception("Por favor verifique que los ha ingresado correctamente");
				}
			} catch (Exception $e) {
				$transaction->rollback();
				$resultado["error"]=true;
				$resultado["mensaje"]=htmlspecialchars($e->getMessage());
			}
			echo json_encode($resultado);
			Yii::app()->end();
		}
		else{
			$modelo=Modulo::model();
			$this->render('nuevo');
		}
	}

	public function actionEditar(){
		if(Yii::app()->request->isPostRequest){
			$resultado["error"]=false;
			$transaction=Yii::app()->db->beginTransaction();
			try{
				if(Modulo::model()->actualizarDatosModulo($_POST)){
					$transaction->commit();
				}
			}
			catch(Exception $e){
				$transaction->rollback();
				$resultado["error"]=true;
				$resultado["mensaje"]="Ha ocurrido un error, $e";
			}

			echo json_encode($resultado);
			Yii::app()->end();
		}
		else {
			$id_modulo=$_GET['id'];
			$modelo=Modulo::model()->findByPk($id_modulo);
			$this->renderPartial("editar",array('modelo'=>$modelo));
		}
	}
	
	public function actionObtenerMenus(){
		$id_modulo=$_REQUEST['id_modulo'];
		$menus=Modulo::model()->obtenerMenus($id_modulo);
		echo json_encode($menus);
		Yii::app()->end();		
	}



	// Uncomment the following methods and override them if needed
	/*
	public function filters()
	{
	// return the filter configuration for this controller, e.g.:
	return array(
			'inlineFilterName',
			array(
					'class'=>'path.to.FilterClass',
					'propertyName'=>'propertyValue',
			),
	);
	}

	public function actions()
	{
	// return external action classes, e.g.:
	return array(
			'action1'=>'path.to.ActionClass',
			'action2'=>array(
					'class'=>'path.to.AnotherActionClass',
					'propertyName'=>'propertyValue',
			),
	);
	}
	*/
}